package com.fejal.dao;


import java.util.List;
import com.fejal.bean.ContasBanco;


public class ContasBancoDAOHibernate implements ContasBancoDAO {

	HibernateDAOFactory hibernateDAOFactory = null;
	HibernateDAO<ContasBanco> hibernateDAO = null;

	public ContasBancoDAOHibernate() {
		hibernateDAOFactory = new HibernateDAOFactory();
		hibernateDAO = hibernateDAOFactory.getContasBancoDao();
	}

	@Override
	public boolean inserir(ContasBanco contasBanco) throws Exception {

		boolean ok = false;

		try {
			hibernateDAO.add(contasBanco);
			ok = true;

		} catch (Exception e) {
			throw new Exception(e.getMessage());
			
		} 
		return ok;
	}

	@Override
	public boolean alterar(ContasBanco contasBanco) throws Exception {

		boolean ok = false;
	
		
		try {
			hibernateDAO.update(contasBanco);
			ok = true;

		} catch (Exception e) {
			throw new Exception(e.getMessage());
		} 
		return ok;
	}

	@Override
	public boolean excluir(ContasBanco contasBanco) throws Exception {

		boolean ok = false;

		try {
			hibernateDAO.remove(contasBanco);
			ok = true;

		} catch (Exception e) {
			throw new Exception(e.getMessage());
		}
		return ok;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<ContasBanco> getSelecionar(int codigoBanco, String descricao) {
		String 	sql = "FROM ContasBanco WHERE codigoContasBanco <> 0 ";

		if (!(descricao.isEmpty())) {
			sql += "AND descricao like '" + descricao + "%' ";  
		}

		if (codigoBanco != 0) {
			sql += "AND codigoBanco = " + codigoBanco + " ";  
		}		

		sql += "ORDER BY codigoBanco, descricao";		

		List<ContasBanco> lista = hibernateDAO.getSession().createQuery(sql).list();

		return lista;
	}

	@Override
	public ContasBanco getContasBanco(int codigoContasBanco) {
		ContasBanco contasBanco = hibernateDAO.get(codigoContasBanco);
		return contasBanco;
	}

	@Override
	public List<ContasBanco> getListTodos() {
		
		List<ContasBanco> list = hibernateDAO.listAll();
		return list;
	}

	
	@SuppressWarnings("unchecked")
	@Override
	public boolean isExiste(ContasBanco contasBanco) {
		// SQL para verificar se a ContasBanco existe
		String 	sql = 	"FROM ContasBanco " +
				"WHERE codigoContasBanco != "+contasBanco.getCodigoContasBanco()+ " AND" +
				" descricao = '"+contasBanco.getDescricao()+"'";

		List<ContasBanco> lista = hibernateDAO.getSession().createQuery(sql).list();
		if(lista.size()<1){
			return false;
		} else {
			return true;
		}
	}

}
